#define _CRT_SECURE_NO_WARNINGS  1
//一定要动手，例子不管多么简单，建议至少自己手敲一遍看看是否理解了里头的细枝末节。
//一定要学会思考，思考为什么要这样，而不是那样。还要举一反三地思考
#include<string>
#include<iostream>
using namespace std;
//打印模板函数
template<class P>
void Print(P a[], int n)
{
	for (int i = 0; i < n; i++)
	{
		cout << P[i] << " ";
	}
	cout << endl;
 }
//交换模板函数
template<class S>
void swap(S& a, S& b)
{
	S tmp = a;
	a = b;
	b = tmp;
}
//排序模版函数
template<class T>
void Sort(T arr[], int size)
{
	//排序

	for (int i = 0; i < size; i++)
	{
		int max = i;//假设下标为max的值最大
		for (int j = i + 1; j < size; j++)
		{
			//当认定的max位置的值小与j位置的值时，当假设失败时，更新下标
			if (arr[j] > arr[max])
			{
				max = j;
			}
		}
		//当max ！= i时，交换两个下标的值
		if(max!=i)
		swap(arr[i], arr[max]);
	}
}
//测试int型数组
void test1()
{
	int arr[] = { 1,2,6,3,4,9 };
	int size = sizeof(arr) / sizeof(arr[0]);
	Sort(arr, size);
	Print(arr, size);
}
int main()
{
	test1();
	return 0;
}